home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / CPP / WCLASS95.ZIP / DELSTAT2.SCT < prev    next >
Encoding:
Text File  |  1995-07-28  |  1.5 KB  |  75 lines

  1. NO_OUTPUT_BEGIN
  2. State code generation for Delphi from a state diagram
  3. 1.  Create the state diagram
  4. 2.  Generate - Generate State Code/Report
  5. 3.  Save unit file as controls.pas
  6. 4.  Compile controls.pas in Delphi
  7. NO_OUTPUT_END
  8.  
  9. SCRIPT_NOREPEAT_HEADER_BEGIN
  10. unit Controls ;
  11.  
  12. interface
  13.  
  14. type
  15.  
  16. States = ( [NO_RETURN STATE_LIST_NAME,DELETE_LAST_SYMBOL] ) ;
  17.  
  18. Events = ( [NO_RETURN EVENT_LIST_NAME,DELETE_LAST_SYMBOL] ) ;
  19.  
  20. Controller = class
  21.  
  22.   currentState : States;
  23.  
  24.   procedure Process ( anEvent : Events ) ;
  25.  
  26.   constructor DefaultInit;
  27.     
  28.   destructor Done; virtual;
  29.  
  30. end;
  31.  
  32. implementation
  33.  
  34. {-----------------------------------------------------------------------------------------------}
  35.             
  36. constructor Controller$.DefaultInit;
  37. begin
  38.   currentState := STATE_INITIAL_NAME ;
  39. end; 
  40.  
  41. {-----------------------------------------------------------------------------------------------}
  42.             {Update as required.}
  43. destructor Controller$.Done;
  44. begin
  45. end;
  46.  
  47. {-----------------------------------------------------------------------------------------------}
  48.             { Process procedure  }
  49. procedure Controller.Process ( anEvent : Events ) ; 
  50. begin
  51.  case currentState of
  52.  
  53. SCRIPT_NOREPEAT_HEADER_END
  54.  
  55.   STATE_NAME:  
  56.   begin
  57. [
  58.   if ( anEvent = TRANSITION_EVENT ) And ( TRANSITION_CONDITION ) then
  59.     begin
  60.       currentState := TRANSITION_NEXT_STATE ; 
  61.       TRANSITION_ACTION 
  62.     end;
  63. ]      
  64.   end;    
  65.  
  66. SCRIPT_NOREPEAT_FOOTER_BEGIN
  67.   else
  68.       currentState := STATE_TERMINAL_NAME;  
  69.   end;    
  70. end;    
  71.  
  72.  
  73. end.
  74. SCRIPT_NOREPEAT_FOOTER_END
  75.